package com.company;

import java.sql.*;

/**
 * java操作数据库
 * (1) 调用Class.forName()方法加载驱动程序。在需要动态加载时用
 * (2) 调用DriverManager对象的getConnection()方法，获得一个Connection对象。
 * (3) 创建一个Statement对象，准备一个SQL语句，这个SQL语句可以是Statement对象（立即执行的的语句）、PreparedStatement语句（预编译的语句）或CallableStatement对象（存储过程调用的语句）。
 * (4) 调用excuteQuery()等方法执行SQL语句，并将结果保存在ResultSet对象；或者调用executeUpdate()等方法执行SQL语句，不返回ResultSet对象的结果。
 * (5)对返回的ResultSet对象进行显示等相当的处理。
 * (6)释放资源。
 * Created by IntelliJ IDEA.
 * User: zzx
 * Date: 2017/11/15
 * Time: 上午8:29
 */
public class MySql {

    public Connection conn; // 声明一个数据库连接对象
    public Statement stmt; // 声明一个操作对象
    /**
     * 构造函数 初始化数据库连接
     *
     * @param dbHost 数据库地址，不要带http://
     * @param dbName 数据库名
     * @param uName  数据库用户
     * @param passwd 连接密码
     * @throws Exception
     */
    public MySql(String dbHost, String dbName, String uName, String passwd) throws Exception {

        String dbURL = "jdbc:mysql://" + dbHost + "/" + dbName +
                "?useUnicode=true&characterEncoding=utf-8&useSSL=false";
        try {
            conn = DriverManager.getConnection(dbURL, uName, passwd);
            System.out.println("数据库连接成功...");
        } catch (SQLException e) {
            System.out.println("连接数据库失败！");
            e.printStackTrace();
        }
    }


    /**
     * 执行数据库查询操作，使用executeQuery
     *
     * @param sql
     * @return 返回值为查询结果集
     */
    public ResultSet MyQuery(String sql) {
        ResultSet res = null;
        try {
            stmt = conn.createStatement();
            res = stmt.executeQuery(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return res;
    }


    /**
     * 执行数据库更新操作，使用executeUpdate
     *
     * @param sql
     * @return 返回值为执行结果，受影响的记录数，-1为失败，0为没有更新
     */
    public int MyUpdate(String sql) {
        int res = 0;
        try {
            stmt = conn.createStatement();
            res = stmt.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return res;
    }
}
